package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"os"
)

func appendToFile(filename, data string) error {
	// 以追加模式打开文件
	file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		return err
	}
	defer file.Close()

	_, err = file.WriteString(data + "\n")
	return err
}

func copyFile(src, dst string) error {
	// 读取源文件内容
	srcData, err := ioutil.ReadFile(src)
	if err != nil {
		return err
	}

	// 将内容写入目标文件
	err = ioutil.WriteFile(dst, srcData, 0644)
	return err
}

func readFile(filename string) (string, error) {
	// 读取文件内容
	data, err := ioutil.ReadFile(filename)
	if err != nil {
		return "", err
	}

	// 将字节切片转换为字符串
	return string(data), nil
}

func main() {
	// 文件A和文件B的路径
	fileA := "fileA.txt"
	fileB := "fileB.txt"

	// 向文件A末尾追加一行数据
	err := appendToFile(fileA, "This is a new line of text.")
	if err != nil {
		log.Fatalf("Error appending to file: %v", err)
	}

	// 复制文件A的内容到文件B
	err = copyFile(fileA, fileB)
	if err != nil {
		log.Fatalf("Error copying file: %v", err)
	}

	// 读取文件B的内容并输出
	content, err := readFile(fileB)
	if err != nil {
		log.Fatalf("Error reading file: %v", err)
	}

	fmt.Println("Contents of fileB.txt:")
	fmt.Println(content)
}